0%

(ICCV 2015) Fast r-cnn

Keyword [Fast R-CNN]

Girshick R. Fast r-cnn[C]//Proceedings of the IEEE international conference on computer vision. 2015: 1440-1448.


1. Overview


由于R-CNN和SPPnet存在一些缺陷,本篇论文在R-CNN的基础上进行改进,提出速度更快,准确度更高的Fast R-CNN结构(相对于R-CNN增加了一个RoI pooling层)。

  • 对于特定一张图像A,R-CNN模型利用selective search方法对其提取N个proposal (RoIs),输入特征提取网络中进行后续运算。由于N个proposal中存在大量重叠的内容,特征提取网络的运算存在冗余
  • 因此,Fast R-CNN利用特征图共享机制,首先将图像A输入到特征提取网络中得到特征图B,再将RoIs定位到B中,选择相应区域特征图输入到RoI pooling层进行计算
  • 可看作是在输入图像提取的特征图上进行region proposal,而非在输入图像上进行region proposal后再对proposal提取特征。
  • Fast R-CNN在PASCAL VOC 2012数据集上
    • 相比于R-CNN,训练速度快9倍,测试速度快213倍. mAP到达66% (R-CNN为62%)
    • 相比于SPPnet,训练速度快3倍,测试速度快10倍

1.1. R-CNN缺点

  • Multi state pipeline. 微调、SVM、bounding box回归
  • 速度慢. 47s/image on GPU
  • Expensive in space and time. 在训练SVM之前,需要将提取特征存入硬盘

1.2. SPPnet缺点

  • Multi stage pipeline
  • 提取的特征需要存入硬盘

1.3. Fast R-CNN贡献

  • 更高mAP
  • Single stage
  • 能够更新所有网络层
  • 不需硬盘存储

2. 结构与训练




2.1. RoI pooling

  • 输入. 输入图像中的RoI在其特征图上对应的区域(RoI是相对于输入图像而言的,因此将RoI和共享特征图输入到RoI Pooling层的同时,还会输入一个scale参数,也称为feature_stride(表示共享特征图与输入图像的比例))。
  • 指定超参数H*W(论文设置为77),即RoI pooling层的输出大小。对于hw的输入特征图,RoI pooling层将其划分为H*W的网格,对每个网格进行max pool操作

2.2. 预训练权重初始化网络

  • 使用ImageNet预训练权重,将
    • 最后一个max pooling层换成RoI pooling层
    • 最后一个 (fc, softmax) 换成2个 (fc, softmax)分支
  • 网络的输入为
    • 图像
    • 对应图像中的RoIs

2.3. Fine-tuning

  • 采样N张图片,每张图片采样R/N个RoIs. 论文将N设置为2,R设置为128,即对采样的两张图片,各采样64个RoIs
  • 由于所属某张图片的各RoI能够共享从该图片提取的特征图,因此相比与对128张图片各采样1个RoIs的方法快64倍

2.4. Multi-task loss



  • p由第一个分支输出,包含对k+1个类别的预测置信度,u为ground truth
  • t由第二个分支输出,包含k个类别的bounding box regression offset预测. v为ground truth, 归一化到标准正态分布
  • [u≥1] 当u≥1时,值为1,否则为0
  • λ超参数设置为1
  • 对于一张图片(包含2只猫,一只狗),共产生200个region proposal (RoI),模型分类器包含4类(猫、狗、鸟和背景)
    • cls loss 每个RoI会产生1个置信度向量[猫,狗,鸟,背景],直接与 class groud truth向量[p1, p2, p3, p4]计算loss
    • loc loss 每个RoI会产生针对3个类别(猫、狗、鸟)的bounding box偏移量BB猫, BB狗, BB鸟,只计算这个RoI的class ground truth对应的bounding box loss. 例如,如果一个RoI的class ground truth为狗,那么计算BB ground truth与BB狗的loss.

上述为训练阶段的操作,在测试阶段,对N个RoI预测结果使用NMS算法进行过滤。

2.5. Mini-batch sampling

  • Mini-batch大小为R=128,每张图片64个RoIs,25%为正样本(IoU≥0.5),其余为负样本(IoU∈[0.1,0.5),忽略小于0.1的RoI)
  • 0.5概率水平翻转图像,扩大数据集

2.6. Scale invariance

  • Brute force. 直接将图片resize 成固定大小
  • Image pyramid. 在训练阶段,每次随机采样一个特定的pyramid scale。

论文在试验中证明image pyramid对mAP提升很小,但耗时明显增加。因此论文采用第一种方法。

2.7. 测试阶段

  • R设置为2000,计算得到每个RoI的预测和bounding box regression
  • 使用R-CNN中的NMS方法减少预测结果RoI的数量(NMS仅在测试阶段使用

2.8. 使用Truncated SVD提速

对于u*v的权重矩阵,将其分解为



  • U u*t
  • Σ t*t
  • V v*t
    将计算量从uv降低至t(u+v),将t远小于u,v时。因此,可将fc层的W分解为两个fc层
  • ΣV (no bias)
  • U (包含原fc层中的bias)

3. 实验结果


3.1. VOC数据集

增大数据集能提高准确度.





3.2. 耗时




3.3. Fine-tune

对于较深的网络,只微调fc层的结果明显差于微调卷积层+fc层的结果。



3.4. multi-task训练效果



3.5. Scale invariance

single scale和multi scale性能相差不大,但multi scale耗时增加明显。



3.6. Softmax与SVM



3.7. More proposal worse